public class Test08 {
    public String convert(String s, int numRows) {
        // 处理边界情况
        if(numRows == 1) return s;
        int d = 2 * numRows - 2 , n = s.length();
        StringBuilder ret = new StringBuilder();
        //1. 处理第一行
        for(int i  = 0 ; i < n ; i+=d) ret.append(s.charAt(i));
        // 2. 处理中间行
        for (int i = 1; i < numRows - 1; i++) { // 从第二行到倒数第二行
            for (int a = i; a < n; a += d) {
                ret.append(s.charAt(a)); // 当前字符
                int b = a + d - 2 * i; // 当前行的另一个字符
                if (b < n) ret.append(s.charAt(b));
            }
        }
        //3. 处理最后一行
        for(int i = numRows -1; i < n; i += d) ret.append(s.charAt(i));

        return ret.toString();

    }
}
